<?php
/**
 * @author jonathan <jo.link.noir@gmail.com>
 * @version 1.0: jo_link_noir
 * @date 16-06-2010
 */

/**
 * Classe pour coloniser une planète
 */
class U1_Move_Colonize extends U1_Move_Transport
{
	protected $orderName = 'colonize';


	/**
	 * @param SW_Units $units
	 * @param int $refUser : id du joueur de la planète cible
	 * @return bool : true si la flotte doit être détruite et les objets déposée ($this->depose). false si la flotte doit revenir.
	 */
	protected function process(SW_Units $units, $refUser)
	{
		if (!$refUser)
		{
			$unit13 = $units->offsetExists(13);
			$unit14 = $units->offsetExists(14);
			if ($unit13 || $unit14)
			{
				$planet = U1_Planet::factoryContainsPlanetId($this->startPoint);
				$countPlanet = $planet->count();

				if ($countPlanet >= 13)
				{
					if ($unit14)
						$unit13 = null;
					else
						return false;
				}

				//player_sends est initialisé dans le DAO
				if ($countPlanet >= 21 || !U1_DAO_Planet::update($this->endPoint, $this->player_sends))
					return false;

				$units->subtractUnit($unit13 ? 13 : 14, 1);
				//ajoute la planète
				$planet->add(U1_DAO_Planet::selectId($this->endPoint));
				//crée les ressource car non fait dans l'objet removable
				U1_Planet::initPlanetStorageTreatment(
					$planet->getInstance(U1_Resource::INDEX, $this->endPoint),
					U1_Resource::INDEX
				);
				//ajoute les vaisseaux
				U1_Army_DAO::getFactory()->increase($this->endPoint, $units);

				$this->sendMessage($units, true);
				return true;
			}
		}
		return false;
	}
}